//
//  CZTextView+Extension.swift
//  weibo
//
//  Created by Apple on 16/3/21.
//  Copyright © 2016年 KY. All rights reserved.
//

import UIKit

extension CZTextView {
    
    var emotionText: String {
        //  创建一个空的字符串
        var result: String = String()
        //  遍历textview富文本的内容的插入的内容
        attributedText.enumerateAttributesInRange(NSMakeRange(0, attributedText.length), options: []) { (infoDic, range, stop) -> Void in
            
            if let attachment = infoDic["NSAttachment"] as? CZTextAttachment {
                result += attachment.emoticon!.chs!
            } else {
                //  没有NSAttachment 说明是文本
                result += (self.attributedText.string as NSString).substringWithRange(range)
            }
            
        }
        return result
    }
    
    func insertEmotionText(emoticon: CZEmoticon) {
        
        //  如果是emoji则直接插入code对应的字符串
        if emoticon.isEmoji {
            insertText((emoticon.code! as NSString).emoji())
        } else {
            //  如果是图片则直接插入图片的表情的描述
            //textView.insertText(emoticon.cht!)
            //  原始的富文本
            let originAttributedStr = NSMutableAttributedString(attributedString: attributedText)
//            //  1.生成图片
//            let image = UIImage(named: emoticon.fullPath!)
//            //  2.生成attachment 附件
//            let attachment = CZTextAttachment()
//            attachment.emoticon = emoticon
//            attachment.image = image
//            //  修改表情大小跟文字行高一样大
//            let hegith = font!.lineHeight
//            //  图片表情往下-3.5
//            attachment.bounds = CGRect(x: 0, y: -3.5, width: hegith, height: hegith)
//            //  3.生成富文本
//            let attributedStr = NSAttributedString(attachment:attachment)
            let attachment = CZTextAttachment()
            let attributedStr = attachment.attributedStringWithEmoticon(emoticon, font: font!)
            //  获取选中文本范围
            var selectRange = selectedRange
            print(selectRange)
            //            originAttributedStr.appendAttributedString(attributedStr)
            //  使用替换进行拼接，如果没有选中的话替换的长度就是0，在光标最后位置进行替换
            originAttributedStr.replaceCharactersInRange(selectRange, withAttributedString: attributedStr)
            //  修改富文本的字体大小
            originAttributedStr.addAttribute(NSFontAttributeName, value: font!, range:             NSMakeRange(0, originAttributedStr.length))
            attributedText = originAttributedStr
            //  修改选中范围每输入一次location+1
            selectRange.location += 1
            //  设置选中长度为0
            selectRange.length = 0
            //  设置选中范围，光标停留在最后
            selectedRange = selectRange
            
            //  文字的提示语隐藏
            NSNotificationCenter.defaultCenter().postNotificationName(UITextViewTextDidChangeNotification, object: nil)
            //  发送按钮显示的话，使用通过代理判断的，则调用代理方法,最后一个方法名家属问好是因为是可选的代理方法
            delegate?.textViewDidChange?(self)
            
        }
       
    }
}
